<?php
namespace app\common\mns;
require_once ROOT_PATH.'vendor/aliyun-mns-php-sdk-1.3.5/mns-autoloader.php';
use AliyunMNS\Client;
use AliyunMNS\Requests\SendMessageRequest;
use AliyunMNS\Requests\CreateQueueRequest;
use AliyunMNS\Exception\MnsException;

class Queue{
    public function SendMessage($messageBody){
        $config=config('aliyun_oss');
        //1. 首先获取Queue的实例
        $this->client = new Client($config['MnsEndpoint'], $config['KeyId'], $config['KeySecret']);
        // 1.1 PHP SDK默认会对发送的消息做Base64 Encode，对接收到的消息做Base64 Decode。
        // 1.2 如果不希望SDK做这样的Base64操作，可以在getQueueRef的时候，传入参数$base64=FALSE。即$queue = $this->client->getQueueRef($queueName, FALSE);
        $queue = $this->client->getQueueRef($config['QueueName']);
        // 2. 生成一个SendMessageRequest对象
        // 2.1 SendMessageRequest对象本身也包含了DelaySeconds和Priority属性可以设置。
        // 2.2 对于Message的属性，请参考help.aliyun.com/document_detail/27477.html
        $request = new SendMessageRequest($messageBody);
        try
        {
            $res = $queue->sendMessage($request);
            // 3. 消息发送成功
            return true;
        }
        catch (MnsException $e)
        {
            // 4. 可能因为网络错误，或MessageBody过大等原因造成发送消息失败，这里CatchException并做对应的处理。
            trace('MNSErrorCode：'.$e->getMnsErrorCode(),'error');
            return false;            
        }
    }
}